﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kaskelot.SP.Model.Client;
using Kaskelot.SP.Model.Client.Forms;
using Stockholm.SOA.Kaskelot.WCF.DataContracts;

namespace Kaskelot.SP.Services.Client.Mapping
{
	public static class ClientByggnadTypTypExtensions
	{
		public static ClientByggnadTyp ToClientContract(this ByggnadTyp entity)
		{
			ClientByggnadTyp b = new ClientByggnadTyp();

			CopyFromEntity(entity, b, false);

			return b;
		}

		public static ClientByggnadTyp ToMinimalClientContract(this ByggnadTyp entity)
		{
			ClientByggnadTyp b = new ClientByggnadTyp();

			CopyFromEntity(entity, b, true);

			return b;
		}

		public static ByggnadTyp ToContract(this ClientByggnadTyp b)
		{
			ByggnadTyp entity = new ByggnadTyp();

			CopyToEntity(b, entity);

			return entity;
		}

		public static ByggnadTyp UpdateContract(this ByggnadTyp bhl, ByggnadTypForm form)
		{
			if (bhl.Id == Guid.Empty)
				bhl.Id = Guid.NewGuid();

			bhl.Namn = form.Namn;

			return bhl;
		}

		private static void CopyFromEntity(ByggnadTyp from, ClientByggnadTyp to, bool minimal)
		{
			to.Id = from.Id;
			to.Namn = from.Namn;
			to.ValId = from.ValId;
			to.Skapad = from.Skapad.ToShortDateString();
			to.SkapadAv = from.SkapadAv;
			to.Andrad = from.Andrad.HasValue ? from.Andrad.Value.ToShortDateString() : "";
			to.AndradAv = from.AndradAv;
		}

		private static void CopyToEntity(ClientByggnadTyp from, ByggnadTyp to)
		{
			to.Id = from.Id;
			to.Namn = from.Namn;
			to.ValId = from.ValId;
			to.Skapad = DateTime.Parse(from.Skapad);
			to.SkapadAv = from.SkapadAv;
			to.Andrad = DateTime.Parse(from.Andrad);
			to.AndradAv = from.AndradAv;
		}
	}
}
